#ifndef VALEUR_H_
#define VALEUR_H_

#include <typeinfo>
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;

class Valeur {
public:
    virtual ~Valeur() {};
};

class ValeurInt : public Valeur { // Valeur peut contenir une Valeur entiere
public:
    ValeurInt(int val=0) {
        this->val=val;
    }
    int getValeur() {
        return val;
    }
private:
    int val;
};

class ValeurFloat : public Valeur { // Valeur peut contenir une Valeur réélle
public:
    ValeurFloat(float val=0.0) {
        this->val=val;
    }
    float getValeur() {
        return val;
    }
private:
    float val;
};

class ValeurString : public Valeur { // Valeur peut contenir une chaine
public:
    ValeurString(string val="") {
        this->val=val;
    }
    string getValeur() {
        return val;
    }
private:
    string val;
};

class ValeurChar : public Valeur { // Valeur peut contenir un caractère
public:
    ValeurChar(char val='\0') {
        this->val=val;
    }
    char getValeur() {
        return val;
    }
private:
    char val;
};

#endif /* VALEUR_H_ */


